package com.zjj.learn.javaplus.pkg01.demo13;

import com.zjj.learn.javaplus.pkg01.demo11.Student;

/**
 * 构造器测试：constructor
 * super(...)
 *
 * @see com.zjj.learn.javaplus.pkg01.demo11.Student#Student(String, Integer, Integer)
 * 1、构造器的名字必须与类名相同，否则久不能够调用父类中的构造器。
 * 2、构造器的作用是 ”初始化对象成员变量的数据“，必须先执行父类构造器，才能够执行子类的构造器。
 * 3、在子类构造器中，会有一个 默认的 super()【没有参数】 方法
 * 4、继承后子类构造器特点:子类所有构造器的第一行都会先调用父类的无参构造器，再执行自己
 * @see com.zjj.learn.javaplus.pkg01.demo13.Cat#Cat()
 * this(...) 的使用
 * 1、this(...) 表示调用 本类对象的构造器，根据参数进行匹配
 * 2、this(...) 必须使用在第一行
 * 3、this(...) 和 super(...) 都必须出现在第一行，所以这两个一定不可能一起出现
 * <p>
 * <p>
 * 注意：
 * 1、子类的每个构造方法中均有默认的super()，调用父类的空参构造。手动调用父类构造会覆盖默认的super()。
 * 2、super() 和 this() 都必须是在构造方法的第一行，所以不能同时出现。
 * 3、super(..)是根据参数去确定调用父类哪个构造器的。
 *
 * 在java中只支持单继承，不能够出现 class A extend B,C {}
 * 可以使用多层集成 类 B 是类 A 的子类，类 C 是类 B 的子类，那么类C 也是类 A 的子类，这样是可以的
 * 在 Java 中，Object 类是所有类的父类
 **/
public class TestDemo03 {

    public static void main(String[] args) {
        Student student = new Student("小可爱", 16, 120);
        String name = student.getName();
        System.out.println("name = " + name);


        Cat cat = new Cat();
        String color = cat.getColor();
        System.out.println("color = " + color);

    }
}
